package clearsyntax;

import clearsyntax.types.IntegerRange;
import clearsyntax.types.Tuple1;
import clearsyntax.types.Tuple10;
import clearsyntax.types.Tuple11;
import clearsyntax.types.Tuple12;
import clearsyntax.types.Tuple13;
import clearsyntax.types.Tuple14;
import clearsyntax.types.Tuple15;
import clearsyntax.types.Tuple16;
import clearsyntax.types.Tuple17;
import clearsyntax.types.Tuple18;
import clearsyntax.types.Tuple19;
import clearsyntax.types.Tuple2;
import clearsyntax.types.Tuple20;
import clearsyntax.types.Tuple21;
import clearsyntax.types.Tuple22;
import clearsyntax.types.Tuple3;
import clearsyntax.types.Tuple4;
import clearsyntax.types.Tuple5;
import clearsyntax.types.Tuple6;
import clearsyntax.types.Tuple7;
import clearsyntax.types.Tuple8;
import clearsyntax.types.Tuple9;

public final class simple {

	public static IntegerRange $(int start, int end) {
		return new IntegerRange(start, end, 1);
	}

	public static IntegerRange $(int start, int end, int step) {
		return new IntegerRange(start, end, step);
	}

	public static IntegerRange $$(int start, int end) {
		return new IntegerRange(start, end + 1, 1);
	}

	public static IntegerRange $$(int start, int end, int step) {
		return new IntegerRange(start, end + 1, step);
	}

	public static <T1> Tuple1<T1> _(T1 o1) {
		return new Tuple1<T1>(o1);
	}

	public static <T1, T2> Tuple2<T1, T2> _(T1 o1, T2 o2) {
		return new Tuple2<T1, T2>(o1, o2);
	}

	public static <T1, T2, T3> Tuple3<T1, T2, T3> _(T1 o1, T2 o2, T3 o3) {
		return new Tuple3<T1, T2, T3>(o1, o2, o3);
	}

	public static <T1, T2, T3, T4> Tuple4<T1, T2, T3, T4> _(T1 o1, T2 o2,
			T3 o3, T4 o4) {
		return new Tuple4<T1, T2, T3, T4>(o1, o2, o3, o4);
	}

	public static <T1, T2, T3, T4, T5> Tuple5<T1, T2, T3, T4, T5> _(T1 o1,
			T2 o2, T3 o3, T4 o4, T5 o5) {
		return new Tuple5<T1, T2, T3, T4, T5>(o1, o2, o3, o4, o5);
	}

	public static <T1, T2, T3, T4, T5, T6> Tuple6<T1, T2, T3, T4, T5, T6> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6) {
		return new Tuple6<T1, T2, T3, T4, T5, T6>(o1, o2, o3, o4, o5, o6);
	}

	public static <T1, T2, T3, T4, T5, T6, T7> Tuple7<T1, T2, T3, T4, T5, T6, T7> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7) {
		return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(o1, o2, o3, o4, o5, o6,
				o7);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8> Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8) {
		return new Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>(o1, o2, o3, o4, o5,
				o6, o7, o8);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9> Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9) {
		return new Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(o1, o2, o3, o4,
				o5, o6, o7, o8, o9);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10) {
		return new Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(o1, o2, o3,
				o4, o5, o6, o7, o8, o9, o10);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11) {
		return new Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(o1,
				o2, o3, o4, o5, o6, o7, o8, o9, o10, o11);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12) {
		return new Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13) {
		return new Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14) {
		return new Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15) {
		return new Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16) {
		return new Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17) {
		return new Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17, T18 o18) {
		return new Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17, o18);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17, T18 o18, T19 o19) {
		return new Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17, o18, o19);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17, T18 o18, T19 o19, T20 o20) {
		return new Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17, o18, o19, o20);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17, T18 o18, T19 o19, T20 o20, T21 o21) {
		return new Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17, o18, o19, o20, o21);
	}

	public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> _(
			T1 o1, T2 o2, T3 o3, T4 o4, T5 o5, T6 o6, T7 o7, T8 o8, T9 o9,
			T10 o10, T11 o11, T12 o12, T13 o13, T14 o14, T15 o15, T16 o16,
			T17 o17, T18 o18, T19 o19, T20 o20, T21 o21, T22 o22) {
		return new Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(
				o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14,
				o15, o16, o17, o18, o19, o20, o21, o22);
	}

}
